home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)zd.d64
/
fkeys.proc
< prev
next >
Wrap
Text File
|
2007-03-01
|
4KB
|
171 lines
9000 // DELETE "@:FKEYS.PRC"
9005 //
9010 // LIST "FKEYS.PRC"
9015 //
9020 // EXTENDING CBM COMAL-80 VS 0.14
9025 // WITH 2.0 LIKE PROCEDURES:
9030 // SHOWKEYS
9035 // DEFKEYS
9040 // BELL
9045 // ERRTEXT
9050 // QUOTE'MODE
9055 // LINK'ERRORS
9056 // USE'ERRORS
9060 // BY DICK KLINGENS
9065 // DUTCH COMAL USERS GROUP
9070 // NOV85
9075 //
9080 // *******************************
9085 // * ONLY POSSIBLE AFTER SPECIAL *
9090 // * ├╧═┴╠ BOOT *
9095 // *******************************
9100 //
9105 PROC SHOWKEYS CLOSED
9110 BASE:=49152+5*256+4*16+4
9115 FOR N:=0 TO 8 DO // INTERNAL KEY#
9120 NO:=N
9125 NOBACK(NO) // - CONVERSION TO
9130 PRINT NO; // FUNCTION KEY#
9135 T:=0 // - CODE CHARACTER
9140 NUL:=FALSE // - END OF CODE
9145 WHILE T<10 AND NOT NUL DO
9150 BYTE:=PEEK(BASE+N*10+T)
9155 IF BYTE THEN // - NO EMPTY CODE
9160 IF BYTE<32 THEN
9165 IF T<>1 THEN PRINT "+",
9170 PRINT "CHR$(",BYTE,")",
9175 ELIF BYTE<128 THEN
9180 PRINT CHR$(BYTE),
9185 ELIF BYTE<160 THEN
9190 IF T<>1 THEN PRINT "+",
9195 PRINT "CHR$(",BYTE,")",
9200 ELSE
9205 PRINT CHR$(BYTE),
9210 ENDIF
9215 ELSE
9220 NUL:=TRUE // - END OF CODE NOW
9225 ENDIF
9230 T:+1 // - NEXT CHARACTER
9235 ENDWHILE
9240 PRINT
9245 ENDFOR N
9250 ENDPROC SHOWKEYS
9255 //
9260 PROC NORMAL'KEYS CLOSED
9265 DIM Q$ OF 1, CR$ OF 1
9270 Q$:=CHR$(34) // - QUOTE
9275 CR$:=CHR$(13) //- CARRIAGE RETURN
9280 DEFKEY(0,"CHAIN "+Q$+"*"+Q$+CR$)
9285 DEFKEY(1,"")
9290 DEFKEY(3,"")
9295 DEFKEY(5,"")
9300 DEFKEY(7,"RUN"+CR$)
9305 DEFKEY(2,"PASS "+Q$+"I"+Q$+CR$)
9310 DEFKEY(4,"AUTO ")
9315 DEFKEY(6,"LIST ")
9320 DEFKEY(8,"RENUM"+CR$)
9325 ENDPROC NORMAL'KEYS
9330 //
9335 PROC DEFKEY(NO,X$) CLOSED
9340 IF NO<0 OR NO>8 THEN
9345 ERRTEXT(3)
9350 ENDIF
9355 KEYNO(NO) // - CONVERSION TO
9360 // INTERNAL KEY NUMBER
9365 BASE:=49152+5*256+4*16+4
9370 BASE:+(NO*10)
9375 FOR T:=1 TO LEN(X$) DO
9380 POKE BASE-1+T,ORD(X$(T))
9385 ENDFOR T
9390 IF LEN(X$)<>10 THEN
9395 POKE BASE+LEN(X$),0
9400 ENDIF
9405 ENDPROC DEFKEY
9410 //
9415 PROC KEYNO(REF NO) CLOSED
9420 // - CONVERSION TO
9425 // INTERNAL KEY NUMBER
9430 IF NO<>0 THEN
9435 IF NO MOD 2=0 THEN // - EVEN
9440 NO:=INT((NO-1)/2)+5
9445 ELSE
9450 NO:=INT(NO/2)+1
9455 ENDIF
9460 ENDIF
9465 ENDPROC KEYNO
9470 //
9475 PROC NOBACK(REF NO) CLOSED
9480 // - CONVERSION TO
9485 // FUNCTION KEY NUMBER
9490 NO:=NO*2-1-(NO>4)*7+(NO=0)
9495 ENDPROC NOBACK
9500 //
9505 PROC BELL(NUM) CLOSED
9510 IF NUM<0 OR NUM>255 THEN
9515 ERRTEXT(3)
9520 ENDIF
9525 FOR T:=1 TO NUM DO
9530 PRINT CHR$(7),
9535 ENDFOR T
9540 ENDPROC BELL
9545 //
9550 PROC ERRTEXT(NO) CLOSED
9555 IF NO<0 OR NO>255 THEN
9560 ERRTEXT(3)
9565 ENDIF
9570 BELL(1)
9575 PRINT CHR$(27),CHR$(NO)
9580 STOP
9585 ENDPROC ERRTEXT
9590 //
9595 PROC QUOTE'MODE(TF) CLOSED
9600 // TF=TRUE QUOTE'MODE ON
9605 // TF=FALSE: QUOTE'MODE OFF
9610 IF TF*(TF-1)<>0 THEN
9615 ERRTEXT(3)
9620 ENDIF
9625 IF TF THEN
9630 CBM'MODE(1,3)
9635 ELSE
9640 CBM'MODE(0,0)
9645 ENDIF
9650 ENDPROC QUOTE'MODE
9655 //
9660 PROC CBM'MODE(TF,TYPE) CLOSED
9665 // TYPE=1: INSERT'MODE(TRUE)
9670 // TYPE=2: QUOTE'MODE(TRUE)
9675 // TYPE=3: BOTH(TRUE)
9680 IF TF=0 THEN
9685 POKE 50336,0
9690 ELIF TF=1 THEN
9695 IF TYPE>0 AND INT(TYPE)=TYPE THEN
9700 IF 6 MOD TYPE=0 THEN
9705 POKE 50336,64*TYPE
9710 ELSE
9715 ERRTEXT(3)
9720 ENDIF
9725 ELSE
9730 ERRTEXT(3)
9735 ENDIF
9740 ELSE
9745 ERRTEXT(3)
9750 ENDIF
9755 ENDPROC CBM'MODE
9760 //
9765 PROC LINK'ERRORS CLOSED
9770 SYS 51550
9775 POKE 2048,0
9780 // ERRORS IN MEMORY: 0
9785 // ERRORS FROM DISK: 1
9790 ENDPROC LINK'ERRORS
9795 //
9800 PROC DISCARD'ERRORS CLOSED
9805 POKE 2048,1
9810 POKE 4312,0 // SETMSG-
9815 ENDPROC DISCARD'ERRORS
9820 //
9825 PROC USE'ERRORS CLOSED
9830 POKE 2048,0
9835 POKE 4312,1 // SETMSG+
9840 ENDPROC USE'ERRORS